import sqlite3

data = "users.db"
class User():
    def __init__(self, id, name, age = None,  res_dir = None ,lab = None, status = None):
        self.id = id
        self.name = name
        self.age = age
        self.res_dir = res_dir
        self.lab = lab
        self.status = status

    def save(self, data):
        conn = sqlite3.connect(data)
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM Users WHERE name=?", (self.name,))
        results = cursor.fetchall()
        if results == []:
            cursor.execute('''
                    CREATE TABLE IF NOT EXISTS Users(
                    id INTEGER, 
                    name TEXT, 
                    age INTEGER,
                    res_dir TEXT,
                    lab TEXT,
                    status TEXT )
                     ''')
            cursor.execute("INSERT INTO Users (id, name, age, res_dir,lab,status  ) VALUES (?, ?, ?, ?, ?, ?)",
                           (self.id, self.name, self.age, self.res_dir, self.lab, self.status))
            conn.commit()
            conn.close()
            print("has been saved")
        else:
            self.update(data)

    def update(self, data):
        conn = sqlite3.connect(data)
        cursor = conn.cursor()

        # Выполняем SQL-запрос для обновления данных по id
        cursor.execute("UPDATE Users "
                       "SET name=?, age=?, res_dir=?, lab=?, status=? "
                       "WHERE id=?",
                       (self.name, self.age, self.res_dir, self.lab, self.status, self.id))

        conn.commit()
        conn.close()

def myself(Users):
    # информация о себе : Имя, сколько лет, лаюратория,институт (по желанию), должность (по желанию), тематикс исследований
    Users.save(data)


def search():
    conn = sqlite3.connect(data)
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM Users")
    results = cursor.fetchall()
    for row in results:
        res_dir = row[3]  # выводит темы, которыми интересуются ученые
        print(res_dir)

def group(name):
    conn = sqlite3.connect(data)
    cursor = conn.cursor()

    # Выполняем SQL-запрос для поиска пользователя по имени
    cursor.execute("SELECT * FROM Users WHERE name=?", (name,))

    # Получаем результаты запроса
    result = cursor.fetchall()
    if result:
        for row in result:
            return row[1] #а что если несколько одинаковых имен
    else:
        return None

def get(id):
    conn = sqlite3.connect(data)
    cursor = conn.cursor()

    # Выполняем SQL-запрос для поиска пользователя по имени
    cursor.execute("SELECT * FROM Users WHERE id=?", (id,))

    # Получаем результаты запроса
    result = cursor.fetchall()
    if result:
        for row in result:
            return User(row[0], row[1], row[2],row[3], row[4], row[5])
    else:
        return None







